from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import QWebEngineView as QWebView
import sys

class 演示(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setAttribute(Qt.WA_DeleteOnClose)
        self.页面 = QWidget()
        self.地址栏 = ""
        self.页面视图 = self.界面(self.页面)
        self.setCentralWidget(self.页面)
        self.showMaximized()

    def 界面(self, 页面):
        self.tabWidget = QTabWidget()

        地址栏 = QLineEdit()
        地址栏.returnPressed.connect(self.requestUri)

        布局 = QGridLayout()

        布局.setContentsMargins(0,0,0,0)

        导航框 = QWidget()
        导航框.setMaximumHeight(32)

        导航区 = QGridLayout(导航框)
        导航区.setSpacing(0)
        导航区.setContentsMargins(0,0,0,0)
        导航区.addWidget(地址栏, 0, 4)

        布局.addWidget(导航框)

        视图 = QWebView()
        空白 = "<head><style>body{ background-color: #fff; }</style></head><body></body>";
        视图.setHtml(空白)

        框架 = QFrame()
        框架.setFrameStyle(QFrame.Panel)

        网格布局 = QGridLayout(框架);
        网格布局.setContentsMargins(0, 0, 0, 0);
        网格布局.addWidget(视图, 0, 0, 1, 1);
        框架.setLayout(网格布局)

        self.tabWidget.setCurrentWidget(视图)
        self.地址栏 = 地址栏
        布局.addWidget(框架)
        页面.setLayout(布局)
        return 视图

    # 不确定是否为重载时，不修改接口名
    def requestUri(self):
        地址文本 = self.地址栏.text()
        # no protocol?
        if 'http' not in 地址文本:
            self.地址栏.setText('https://' + 地址文本)

        地址 = QUrl(self.地址栏.text())

        if 地址.isValid():
            self.页面视图.load(地址)
        else:
            print("无效地址")

def main():
   app = QApplication(sys.argv)
   ex = 演示()
   ex.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()